import { type BaseHelpProps } from '../../../functionalComponent';
import { type IObject } from '../../../util';
import { type OrgTreeType } from '../../org-tree';

export interface UserParamType {
  containLowOrg?: boolean;
  dataAccessAuth?: boolean;
  pageNum: number;
  pageSize: number;
  belongOrg?: string;
  belongDept?: string;
  belongProject?: string;
  query?: string;
  containLowOrgUser?: boolean;
}
export interface BaseUserHelp extends BaseHelpProps {
  /**
   * @description       是否显示组织树
   * @default           true
   */
  showTree?: boolean;
  displayField?: string;
  /**
   * @description       自定义弹出帮助的title
   */
  title?: string;
  /**
   * @description       是否开启多选模式
   * @default           false
   */
  multiple?: boolean;
  /**
   * @description       底部扩展组件
   */
  footer?: React.ReactNode;
  /**
   * @description       表格列配置
   */
  columns?: IObject[];
  /**
   * @description       用户列表参数
   */
  userParams?: UserParamType;
  /**
   * @description       自定义用户请求
   */
  userRequest?: (params: UserParamType) => Promise<{ list: any[]; total: number | string }>;
  /**
   * @description  是否登录到项目，默认为组织
   * @default           false
   */
  isProject?: boolean;
}

export type IUserHelp = BaseUserHelp & OrgTreeType;

export interface IUserHelpTreeProps {
  /**
   * @description  是否开启管理员权限控制
   * @default           false
   */
  enableManagerContrl: boolean;
  /**
   * @description  是否开启数据权限控制
   * @default           true
   */
  dataAccessAuth: boolean;
  /**
   * @description  组织授权类型
   * @default       2
   * @enum   1=登录权限,2=查询权限
   */
  orgInnerType: string;
  /**
   * @description  是否包含下级单元
   * @default      false
   */
  containLowCu: boolean;
  /**
   * @description  是否包含部门
   * @default       true
   */
  containDept: boolean;
  /**
   * @description  是否包含项目
   * @default       false
   */
  containProject: boolean;
  /**
   * @description  只显示此组织
   * @default           false
   */
  orgId?: string;
}
